﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using DynamicAuditor.DTOs;

namespace DynamicAuditor
{


    /// <summary>
    /// Fecha: 03-Octubre-2010
    /// Autor:Kenneth Bogantes F
    /// Descripcion: En esta clase se va a manejar todas las operaciones correspondientes a MODULOS tales como: Insercion, Actualizacion, Eliminacion
    /// y todo lo relaciona con MODULOS.
    /// </summary>
    /// 

  public  class clsModulosMg
    {


        //Declaracion de la varaiable tipo datacontext que vamos a utilizar en toda la clase.
        DynamicAuditorDataContext bd = new DynamicAuditorDataContext();

        #region Funciones_Basicas_Mantenimientos

        //--------------------------------------------------------------------------------------------------------------------------

        public int InsertModulos(DTOs.dtoModulo modulo)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;
            MODULO nuevoRegistro = new MODULO();

            try
            {
                nuevoRegistro.Codigo = modulo.Codigo;
                nuevoRegistro.Descripcion = modulo.Descripcion;
                nuevoRegistro.Nombre = modulo.Nombre;
                nuevoRegistro.Activo = modulo.Activo;
                //Se procede a insertar la informacion del modulo cobit
                bd.MODULOs.InsertOnSubmit(nuevoRegistro);
                bd.SubmitChanges();
                x = 1;
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo insertar el registro. " + ex.Message);

            }
            return x;
        }



        //--------------------------------------------------------------------------------------------------------------------------


        public int UpdateModulos(DTOs.dtoModulo modulo)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;


            try
            {

                MODULO registro = bd.MODULOs.Single(p => p.idModulo == modulo.Idmodulo);

                registro.idModulo = modulo.Idmodulo;
                registro.Nombre =  modulo.Nombre;
                registro.Codigo = int.Parse( modulo.Codigo.ToString());
                registro.Descripcion = modulo.Descripcion;
                registro.Activo = bool.Parse(modulo.Activo.ToString());
                bd.SubmitChanges();
                x = 1;
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error actualizando el registro. " + ex.Message);
            }
            return x;
        }



        //--------------------------------------------------------------------------------------------------------------------------



        public int DeleteModulo(DTOs.dtoModulo modulo)
        {
            //Se retorna un 1 si el proceso se realizo correctamente de lo contrario se retorna un 0

            int x = 0;

            try
            {

                var registro = bd.MODULOs.Single(p => p.idModulo == modulo.Idmodulo);

                bd.MODULOs.DeleteOnSubmit(registro);
                bd.SubmitChanges();
                x = 1;
            }
            catch (Exception ex)
            {
                throw new Exception("No se pudo borrar el registro " + ex.Message);
               
            }

            return x;

        }


        //--------------------------------------------------------------------------------------------------------------------------



        public DTOs.dtoModulo ObtenerModulosporId(int idModulo)
        {
            DTOs.dtoModulo registro = new DynamicAuditor.DTOs.dtoModulo();

            try
            {
                 MODULO dato = bd.MODULOs.Single(p => p.idModulo == idModulo);


                registro.Idmodulo = int.Parse(dato.idModulo.ToString());
                registro.Nombre = dato.Nombre;
                registro.Codigo = int.Parse ( dato.Codigo.ToString());
                registro.Descripcion = dato.Descripcion;
                registro.Activo = bool.Parse ( dato.Activo.ToString());
                

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }

            return registro;
        }


        //--------------------------------------------------------------------------------------------------------------------------



        public List<DTOs.dtoModulo> ObtenerModulos()
        {
            int i = 0;
            List<DTOs.dtoModulo> listaDatos = new List<DTOs.dtoModulo>();

            try
            {
                var datos = (from p in bd.MODULOs

                              orderby p.Nombre
                              select p

                           ).ToList();

                foreach (MODULO registro in datos)
                {
                    listaDatos.Add(new dtoModulo());
                    listaDatos[i].Idmodulo = registro.idModulo;
                    listaDatos[i].Codigo =  int.Parse( registro.Codigo.ToString() );
                    listaDatos[i].Nombre = registro.Nombre;
                    listaDatos[i].Descripcion = registro.Descripcion;
                    listaDatos[i].Activo = bool.Parse(registro.Activo.ToString());
                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }
            return listaDatos;
        }


        //--------------------------------------------------------------------------------------------------------------------------


        public List<DTOs.dtoModulo> ObtenerModulosActivos()
        {
            int i = 0;
            List<DTOs.dtoModulo> listaDatos = new List<DTOs.dtoModulo>();

            try
            {
                var datos = (from p in bd.MODULOs
                              where p.Activo == true
                             orderby p.Nombre
                             select p

                           ).ToList();

                foreach (MODULO registro in datos)
                {
                    listaDatos.Add(new dtoModulo());
                    listaDatos[i].Idmodulo = registro.idModulo;
                    listaDatos[i].Codigo = int.Parse(registro.Codigo.ToString());
                    listaDatos[i].Nombre = registro.Nombre;
                    listaDatos[i].Descripcion = registro.Descripcion;
                    listaDatos[i].Activo = bool.Parse(registro.Activo.ToString());
                    i++;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error obteniendo los datos. " + ex.Message);
            }
            return listaDatos;
        }







        #endregion





    }
}
